package com.chat.db;

public class DbLinkConfigBean {

    // 由于集群实现的业务无法进行事务操作
    // 因此暂时屏蔽集群输入
    // 更新解决方案比较复杂
    // 可以采用哨兵模式并获取当前master作为事务机子,以使用具备事务操作
    // 这样意味着需要两套redis集群支撑

    // 区分数据库(Redis/MongoDB等[预留|未使用])
    private String dbDriver;
    // 集群时主机地址指定分隔符
    public static final String HOST_SEPARATOR = ";";
    // 集群时主机端口指定分隔符
    public static final String PORT_SEPARATOR = ":";
    public static final int REDIS_DEFAULT_PORT = 6379;

    // 是否单机(默认单机)
    private boolean isSingle = true;

    // 20211203 为适应操作工具类修改为仅有hosts变量
    // 其中主机使用;号分隔,端口号使用:分隔
    // 该属性分配给具备事务数据库主机
    // 主机地址(集群时包含指定分隔符)
    private String hosts;
    // 主机端口(集群时包含指定分隔符)
    // private String ports;

    // 20211203 同上取消端口处理
    // 该属性分配给集群使用,不需要事务支撑
    // 集群中主机地址
    private String clusterHosts;
    // 集群中主机端口
    // private String clusterPorts;

    // 数据库访问密码(默认无密码访问)
    private String password;

    // 最大连接数
    private int maxLink = 256;
    // 允许最大空闲连接数
    private int maxIdle = 16;

    // 指定连接超时时间(ms)
    private long timeout = 5000;

    /**
     * 单机模式使用
     * @param host 主机
     * @param dbDriver 驱动类型
     */
    public DbLinkConfigBean(String host, String dbDriver) {
        this(host, host, dbDriver);
    }

    /**
     * 集群使用
     * @param host 支持事务单机
     * @param clusters 集群
     * @param dbDriver 驱动类型
     */
    public DbLinkConfigBean(String host, String clusters, String dbDriver) {
        hosts = host;
        clusterHosts = clusters;
        this.dbDriver = dbDriver;
    }

    public String getDbDriver() {
        return dbDriver;
    }

    public void setDbDriver(String dbDriver) {
        this.dbDriver = dbDriver;
    }

    public boolean getIsSingle() {
        return isSingle;
    }

    public void setIsSingle(boolean single) {
        isSingle = single;
    }

    public String getHosts() {
        return hosts;
    }

    public void setHosts(String hosts) {
        this.hosts = hosts;
    }

    // public String getPorts() {
    //     return ports;
    // }

    // public void setPorts(String ports) {
    //     this.ports = ports;
    // }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getMaxLink() {
        return maxLink;
    }

    public void setMaxLink(int maxLink) {
        this.maxLink = maxLink;
    }

    public int getMaxIdle() {
        return maxIdle;
    }

    public void setMaxIdle(int maxIdle) {
        this.maxIdle = maxIdle;
    }

    public long getTimeout() {
        return timeout;
    }

    public void setTimeout(long timeout) {
        this.timeout = timeout;
    }

    public String getClusterHosts() {
        return clusterHosts;
    }

    public void setClusterHosts(String clusterHosts) {
        this.clusterHosts = clusterHosts;
    }

    // public String getClusterPorts() {
    //     return clusterPorts;
    // }

    // public void setClusterPorts(String clusterPorts) {
    //     this.clusterPorts = clusterPorts;
    // }
}
